{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "from numpy import array as npv\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# デバッグ実行\n",
    "\n",
    "デバッグしたい行の直前に、以下を追加\n",
    "\n",
    "```\n",
    "from IPython.core.debugger import Pdb; Pdb().set_trace()\n",
    "```\n",
    "\n",
    "JupyterまたはiPython Notebookでデバッグをする方法\n",
    "http://qiita.com/makopo/items/170c939c79dcc5c89e12"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "None\n",
      "> \u001b[0;32m<ipython-input-136-8d53d24bf0f5>\u001b[0m(4)\u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n",
      "\u001b[0;32m      2 \u001b[0;31m\u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m      3 \u001b[0;31m    \u001b[0;32mfrom\u001b[0m \u001b[0mIPython\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdebugger\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mPdb\u001b[0m\u001b[0;34m;\u001b[0m \u001b[0mPdb\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_trace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m----> 4 \u001b[0;31m    \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m      5 \u001b[0;31m    \u001b[0mprint\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m      6 \u001b[0;31m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\n",
      "ipdb> continue\n",
      "0\n",
      "None\n",
      "> \u001b[0;32m<ipython-input-136-8d53d24bf0f5>\u001b[0m(3)\u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n",
      "\u001b[0;32m      1 \u001b[0;31m\u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m      2 \u001b[0;31m\u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m----> 3 \u001b[0;31m    \u001b[0;32mfrom\u001b[0m \u001b[0mIPython\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdebugger\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mPdb\u001b[0m\u001b[0;34m;\u001b[0m \u001b[0mPdb\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_trace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m      4 \u001b[0;31m    \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m      5 \u001b[0;31m    \u001b[0mprint\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\n",
      "ipdb> continue\n",
      "1\n",
      "None\n",
      "> \u001b[0;32m<ipython-input-136-8d53d24bf0f5>\u001b[0m(4)\u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n",
      "\u001b[0;32m      2 \u001b[0;31m\u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m      3 \u001b[0;31m    \u001b[0;32mfrom\u001b[0m \u001b[0mIPython\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdebugger\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mPdb\u001b[0m\u001b[0;34m;\u001b[0m \u001b[0mPdb\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_trace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m----> 4 \u001b[0;31m    \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m      5 \u001b[0;31m    \u001b[0mprint\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m      6 \u001b[0;31m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\n",
      "ipdb> x\n",
      "1\n",
      "ipdb> i\n",
      "2\n",
      "ipdb> exit\n"
     ]
    },
    {
     "ename": "BdbQuit",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m--------------------------\u001b[0m",
      "\u001b[0;31mBdbQuit\u001b[0mTraceback (most recent call last)",
      "\u001b[0;32m<ipython-input-136-8d53d24bf0f5>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      2\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      3\u001b[0m     \u001b[0;32mfrom\u001b[0m \u001b[0mIPython\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdebugger\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mPdb\u001b[0m\u001b[0;34m;\u001b[0m \u001b[0mPdb\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_trace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m     \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      5\u001b[0m     \u001b[0mprint\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m<ipython-input-136-8d53d24bf0f5>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      2\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      3\u001b[0m     \u001b[0;32mfrom\u001b[0m \u001b[0mIPython\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdebugger\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mPdb\u001b[0m\u001b[0;34m;\u001b[0m \u001b[0mPdb\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_trace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m     \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      5\u001b[0m     \u001b[0mprint\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/pyenv/versions/3.6.1/lib/python3.6/bdb.py\u001b[0m in \u001b[0;36mtrace_dispatch\u001b[0;34m(self, frame, event, arg)\u001b[0m\n\u001b[1;32m     46\u001b[0m             \u001b[0;32mreturn\u001b[0m \u001b[0;31m# None\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     47\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mevent\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'line'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 48\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdispatch_line\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mframe\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     49\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mevent\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'call'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     50\u001b[0m             \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdispatch_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mframe\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0marg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/pyenv/versions/3.6.1/lib/python3.6/bdb.py\u001b[0m in \u001b[0;36mdispatch_line\u001b[0;34m(self, frame)\u001b[0m\n\u001b[1;32m     65\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstop_here\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mframe\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbreak_here\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mframe\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     66\u001b[0m             \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0muser_line\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mframe\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 67\u001b[0;31m             \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mquitting\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mBdbQuit\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     68\u001b[0m         \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrace_dispatch\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     69\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mBdbQuit\u001b[0m: "
     ]
    }
   ],
   "source": [
    "x = 0\n",
    "for i in range(10):\n",
    "    from IPython.core.debugger import Pdb; Pdb().set_trace()\n",
    "    x = x + i\n",
    "    print (i)\n",
    "\n",
    "print (x)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# 計算時間計測\n",
    "\n",
    "```\n",
    "The slowest run took 42.30 times longer than the fastest. This could mean that an intermediate result is being cached.\n",
    "1000000 loops, best of 3: 753 ns per loop\n",
    "```\n",
    "\n",
    "* 100万回実行して上位3回の平均が753ナノ秒 (ns)\n",
    "    * 0.753マイクロ秒(μs)\n",
    "    * 0.000753ミリ秒(ms)\n",
    "    * 0.000000753秒(s)\n",
    "    \n",
    "1秒は10億ナノ秒"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The slowest run took 2230.56 times longer than the fastest. This could mean that an intermediate result is being cached.\n",
      "1000000 loops, best of 3: 731 ns per loop\n"
     ]
    }
   ],
   "source": [
    "v = np.random.random(size=(3))\n",
    "%timeit np.dot(v,v)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# 線形独立\n",
    "\n",
    "## 2次元ベクトル\n",
    "\n",
    "$ a \\boldsymbol{x_1} +  b \\boldsymbol{x_2}$ をベクトル $ \\boldsymbol{x_1}, \\boldsymbol{x_2} $ の線形結合という。\n",
    "\n",
    "$ a \\boldsymbol{x_{1}} + b \\boldsymbol{x_{2}}= \\boldsymbol{0} $\n",
    "が $ a=b=0 $ 以外で成り立つ $ a,b $ が存在するとき、 $ \\boldsymbol{x_{1}}, \\boldsymbol{x_{2}} $ は線形従属であるという。\n",
    "\n",
    "線形従属でない場合、 $ \\boldsymbol{x_{1}},\\boldsymbol{x_{2}} $ は線形独立であるという。\n",
    "\n",
    "## n次元ベクトル\n",
    "\n",
    "直交座標内の成分で表された $n$ 次元のベクトルは\n",
    "\n",
    "$ \\displaystyle\n",
    "  \\boldsymbol{U} = \\left(\n",
    "    \\begin{array}{c}\n",
    "      U_{1}  \\\\\n",
    "      U_{2}  \\\\\n",
    "      \\vdots  \\\\\n",
    "      U_{n}\n",
    "    \\end{array}\n",
    "  \\right)\n",
    "  = U_{1} \\boldsymbol{e}_1 + U_{2} \\boldsymbol{e}_2 + \\dots + U_{n} \\boldsymbol{e}_n\n",
    "  = \\sum^{n}_{k=1} U_{k} \\boldsymbol{e}_k\n",
    "$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# 逆行列\n",
    "\n",
    "$\n",
    "  \\boldsymbol{A} = \\left(\n",
    "    \\begin{array}{ccc}\n",
    "      a_{11} & a_{12} & a_{13} \\\\\n",
    "      a_{21} & a_{22} & a_{23} \\\\\n",
    "      a_{31} & a_{32} & a_{33}\n",
    "    \\end{array}\n",
    "  \\right)\n",
    "$\n",
    "\n",
    "について $ \\boldsymbol{A} $ の行列式\n",
    "\n",
    "$ \\rm{det} ~ \\boldsymbol{A} = a_{11}a_{22}a_{33} + a_{21}a_{32}a_{13} + a_{31}a_{12}a_{23} - a_{11}a_{32}a_{23} - a_{31}a_{22}a_{13} - a_{21}a_{12}a_{33} \\not= 0$\n",
    "\n",
    "のとき、$ \\boldsymbol{A} $の逆行列は\n",
    "\n",
    "$\n",
    "  \\boldsymbol{A}^{-1} = \\frac{1}{\\rm{det} ~ \\boldsymbol{A}} = \\left(\n",
    "    \\begin{array}{ccc}\n",
    "      a_{22}a_{33} - a_{23}a_{32} & a_{13}a_{32} - a_{12}a_{33} & a_{12}a_{23} - a_{13}a_{22} \\\\\n",
    "      a_{23}a_{31} - a_{21}a_{33} & a_{11}a_{33} - a_{13}a_{31} & a_{13}a_{21} - a_{11}a_{23} \\\\\n",
    "      a_{21}a_{32} - a_{22}a_{31} & a_{12}a_{31} - a_{11}a_{32} & a_{11}a_{22} - a_{12}a_{21}\n",
    "    \\end{array}\n",
    "  \\right)\n",
    "$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "matrix_a1a2a3 = \n",
      " [[ 1.   6.   0. ]\n",
      " [ 2.   5.   8. ]\n",
      " [ 5.   4.   4.5]] \n",
      "\n",
      "det_matrix_a1a2a3 = \n",
      " 176.49999999999994 \n",
      "\n",
      "inv_matrix_a1a2a3 = \n",
      " [[-0.05382436 -0.1529745   0.27195467]\n",
      " [ 0.17563739  0.02549575 -0.04532578]\n",
      " [-0.09631728  0.14730878 -0.03966006]] \n",
      "\n",
      "matrix_a1a2a3_product_inv_matrix_a1a2a3 = \n",
      " [[  1.00000000e+00  -1.38777878e-17   5.55111512e-17]\n",
      " [  1.11022302e-16   1.00000000e+00   0.00000000e+00]\n",
      " [ -2.77555756e-17  -8.32667268e-17   1.00000000e+00]] \n",
      "\n",
      "inv_matrix_a1a2a3_matrix_a1a2a3_product = \n",
      " [[  1.00000000e+00   0.00000000e+00   5.55111512e-17]\n",
      " [  2.77555756e-17   1.00000000e+00   1.38777878e-17]\n",
      " [ -2.77555756e-17   5.55111512e-17   1.00000000e+00]] \n",
      "\n"
     ]
    }
   ],
   "source": [
    "### ベクトルを生成\n",
    "a1 = npv([1, 2, 5])\n",
    "a2 = npv([6, 5, 4])\n",
    "a3 = npv([0, 8, 4.5])\n",
    "\n",
    "### 3×3行列を生成\n",
    "matrix_a1a2a3 = np.c_[a1, a2, a3]\n",
    "print (\"matrix_a1a2a3 = \\n {0} \\n\".format(matrix_a1a2a3))\n",
    "\n",
    "### 行列式\n",
    "det_matrix_a1a2a3 = np.linalg.det(matrix_a1a2a3)\n",
    "print (\"det_matrix_a1a2a3 = \\n {0} \\n\".format(det_matrix_a1a2a3))\n",
    "\n",
    "### 逆行列\n",
    "inv_matrix_a1a2a3 = np.linalg.inv(matrix_a1a2a3)\n",
    "print (\"inv_matrix_a1a2a3 = \\n {0} \\n\".format(inv_matrix_a1a2a3))\n",
    "\n",
    "### 行列の積\n",
    "matrix_a1a2a3_product_inv_matrix_a1a2a3 = np.dot(matrix_a1a2a3, inv_matrix_a1a2a3)\n",
    "print (\"matrix_a1a2a3_product_inv_matrix_a1a2a3 = \\n {0} \\n\".format(matrix_a1a2a3_product_inv_matrix_a1a2a3))\n",
    "\n",
    "### 順番を変えた行列の積\n",
    "inv_matrix_a1a2a3_product_matrix_a1a2a3 = np.dot(inv_matrix_a1a2a3, matrix_a1a2a3)\n",
    "print (\"inv_matrix_a1a2a3_matrix_a1a2a3_product = \\n {0} \\n\".format(inv_matrix_a1a2a3_product_matrix_a1a2a3))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# 固有値、固有ベクトル\n",
    "\n",
    "与えられた正方行列 $ \\boldsymbol{A} $ の固有値、固有ベクトルを求める\n",
    "\n",
    "* 固有値\n",
    "    * 行列 $ \\boldsymbol{A} $ の固有方程式 $ \\rm{det} ~ ( \\boldsymbol{A} - \\lambda \\boldsymbol{I} ) = 0 $ を未知数 $ \\lambda $ の方程式として解いて固有値 $ \\lambda $ を求める\n",
    "* 固有ベクトル\n",
    "    * 各々の固有値を連立方程式 $ ( \\boldsymbol{A} - \\lambda \\boldsymbol{I} ) \\boldsymbol{x} = \\boldsymbol{0} $ に代入して、対応する固有ベクトル $ \\boldsymbol{x} $ を求める\n",
    "    * 固有ベクトルの定数倍もまた固有ベクトルとなるので、固有ベクトルを答えるときは任意定数をつけた形で答える\n",
    "* 正規化\n",
    "    * 固有ベクトルの長さを1(単位長さ)にする $ \\frac{ \\boldsymbol{A} }{ | \\boldsymbol{A} | } $"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "matrix_a1a2a3 = \n",
      " [[ 1  1  2]\n",
      " [ 0  2 -1]\n",
      " [ 0  0  3]] \n",
      "\n",
      "[ 1.  2.  3.]\n",
      "[[ 1.          0.70710678  0.33333333]\n",
      " [ 0.          0.70710678 -0.66666667]\n",
      " [ 0.          0.          0.66666667]]\n",
      "1.0\n",
      "[ 1.  0.  0.]\n",
      "2.0\n",
      "[ 0.70710678  0.70710678  0.        ]\n",
      "3.0\n",
      "[ 0.33333333 -0.66666667  0.66666667]\n"
     ]
    }
   ],
   "source": [
    "### ベクトルを生成\n",
    "a1 = npv([1, 0, 0])\n",
    "a2 = npv([1, 2, 0])\n",
    "a3 = npv([2, -1, 3])\n",
    "\n",
    "### 3×3行列を生成\n",
    "matrix_a1a2a3 = np.c_[a1, a2, a3]\n",
    "print (\"matrix_a1a2a3 = \\n {0} \\n\".format(matrix_a1a2a3))\n",
    "\n",
    "### 固有値、固有ベクトルを計算 (正規化済み)\n",
    "la, v = np.linalg.eig(matrix_a1a2a3)\n",
    "\n",
    "print (la)\n",
    "print (v)\n",
    "\n",
    "print (la[0])\n",
    "print (v[:,0])\n",
    "\n",
    "print (la[1])\n",
    "print (v[:,1])\n",
    "\n",
    "print (la[2])\n",
    "print (v[:,2])\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Python\n",
    "\n",
    "## 基本"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'int'>\n",
      "<class 'float'>\n",
      "<class 'str'>\n"
     ]
    }
   ],
   "source": [
    "### データ型\n",
    "### 「型」と「クラス」は同じ意味で使われることがある\n",
    "\n",
    "### int\n",
    "print (type(10))\n",
    "\n",
    "### float\n",
    "print (type(3.14))\n",
    "\n",
    "### str\n",
    "print (type(\"hello\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1, 2, 3, 4, 5]\n",
      "<class 'list'>\n",
      "5\n",
      "1\n",
      "[1, 2, 3, 4, 99]\n",
      "--- スライシング記法 ---\n",
      "[1, 2]\n",
      "[2, 3, 4, 99]\n",
      "[1, 2, 3]\n",
      "[1, 2, 3, 4]\n",
      "[1, 2, 3]\n"
     ]
    }
   ],
   "source": [
    "### リスト\n",
    "### 配列のこと\n",
    "\n",
    "a = [1,2,3,4,5]\n",
    "print (a)\n",
    "print (type(a))\n",
    "\n",
    "### リストの長さを取得\n",
    "print (len(a))\n",
    "\n",
    "### 最初の要素にアクセス\n",
    "print (a[0])\n",
    "\n",
    "### 値を代入\n",
    "a[4] = 99\n",
    "print (a)\n",
    "\n",
    "### スライシング記法によるリストのサブリスト(部分リスト)へのアクセス\n",
    "print (\"--- スライシング記法 ---\")\n",
    "print (a[0:2])\n",
    "print (a[1:])\n",
    "print (a[:3])\n",
    "print (a[:-1])\n",
    "print (a[:-2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'height': 180}\n",
      "<class 'dict'>\n",
      "{'height': 180, 'weight': 70}\n"
     ]
    }
   ],
   "source": [
    "### ディクショナリ\n",
    "### キーと値をペアとして格納するハッシュや連想配列みたいなもの\n",
    "\n",
    "me = {'height':180}\n",
    "print (me)\n",
    "print (type(me))\n",
    "\n",
    "### 新しい要素を追加\n",
    "me['weight'] = 70\n",
    "print (me)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "True\n",
      "<class 'bool'>\n",
      "False\n",
      "False\n",
      "False\n",
      "True\n"
     ]
    }
   ],
   "source": [
    "### ブーリアン\n",
    "### TrueかFalseのどちらかを取る\n",
    "\n",
    "### hungryではある\n",
    "hungry = True\n",
    "print (hungry)\n",
    "print (type(hungry))\n",
    "\n",
    "### sleepyではない\n",
    "sleepy = False\n",
    "print (sleepy)\n",
    "\n",
    "### hungryでは無いかどうか\n",
    "### hungryはTrueなので結果はFalse\n",
    "print (not hungry)\n",
    "\n",
    "### hungryかつsleepyか\n",
    "### hungryではあるがsleepyではないのでFalse\n",
    "print (hungry and sleepy)\n",
    "\n",
    "### hungryもしくはsleepyか\n",
    "### hungryではあるのでTrue\n",
    "print (hungry or sleepy)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "I'm hungry\n",
      "I'm not hungry\n",
      "I'm sleepy\n"
     ]
    }
   ],
   "source": [
    "### if文\n",
    "### インデントはタブを使っても表現できるが、4つの空白文字を使うのが一般的\n",
    "\n",
    "hungry = True\n",
    "if hungry:\n",
    "    print(\"I'm hungry\")\n",
    "\n",
    "hungry = False\n",
    "if hungry:\n",
    "    print(\"I'm hungry\")\n",
    "else:\n",
    "    print(\"I'm not hungry\")\n",
    "    print(\"I'm sleepy\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1\n",
      "2\n",
      "3\n"
     ]
    }
   ],
   "source": [
    "### for文\n",
    "for i in [1, 2, 3]:\n",
    "    print(i)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Hello World!\n",
      "Hello Cat!\n"
     ]
    }
   ],
   "source": [
    "### 関数\n",
    "### まとまりのある処理を関数として定義することができる\n",
    "\n",
    "def hello():\n",
    "    print(\"Hello World!\")\n",
    "\n",
    "hello()\n",
    "\n",
    "### 引数を取ることができる\n",
    "def hello(object):\n",
    "    print(\"Hello \" + object + \"!\")\n",
    "\n",
    "hello(\"Cat\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Initialized!\n",
      "<class '__main__.Man'>\n",
      "Hello David!\n",
      "Good-bye David!\n"
     ]
    }
   ],
   "source": [
    "### クラス\n",
    "### これまでのtype()で表示できるデータ型は「組み込み」のデータ型で初めからPythonに組み込まれている\n",
    "### ここでは新しいクラスを定義する\n",
    "### -> 独自にデータ型(クラス)を作成することができる\n",
    "### -> オリジナルのメソッド(クラス用の関数)や属性を定義することができる\n",
    "\n",
    "### Manという新しいクラスを定義\n",
    "class Man:\n",
    "    ### __init__ は初期化を行うための特別なメソッド\n",
    "    ### コンクラスタとも呼ばれ、クラスのインスタンスが作成される際に一度だけ呼ばれる\n",
    "    ### Pythonではメソッドの第一引数に自分自身のインスタンスを表すselfを明示的に書く\n",
    "    ### nameという引数をとり、その引数でインスタンス変数であるself.nameを初期化する\n",
    "    def __init__(self, name):\n",
    "        ### self.nameのように、selfの後に属性名を書くことでインスタンス変数の作成及びアクセスが可能\n",
    "        self.name = name\n",
    "        print(\"Initialized!\")\n",
    "\n",
    "    def hello(self):\n",
    "        print(\"Hello \" + self.name + \"!\")\n",
    "\n",
    "    def goodbye(self):\n",
    "        print(\"Good-bye \" + self.name + \"!\")\n",
    "\n",
    "### Manというクラスからｍというインスタンス(オブジェクト)を生成\n",
    "m = Man(\"David\")\n",
    "print (type(m))\n",
    "m.hello()\n",
    "m.goodbye()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "## NumPy\n",
    "\n",
    "外部ライブラリ読み込み\n",
    "\n",
    "```\n",
    "import numpy as np\n",
    "```\n",
    "\n",
    "* importで外部ライブラリを読み込む\n",
    "* この書き方で以降はNumPyに関するメソッドはnpとして参照可能\n",
    "\n",
    "### NumPyの算術演算\n",
    "\n",
    "* 演算する配列は要素数が同じでなければならない\n",
    "    * 要素数が同じでない場合はエラーになる\n",
    "    * 英語\n",
    "        * 要素ごと : element-wise\n",
    "        * 要素ごとの積 : element-wise product\n",
    "    * element-wiseな計算だけではなく、NumPy配列と単一の数値(スカラ値)の計算も可能\n",
    "        * NumPy配列の各要素とスカラ値の間で計算が行われる\n",
    "        * 「ブロードキャスト」という機能"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 1.  2.  3.]\n",
      "x = [ 1.  2.  3.]\n",
      "<class 'numpy.ndarray'>\n",
      "y = [ 2.  4.  6.]\n",
      "x + y = [ 3.  6.  9.]\n",
      "x - y = [-1. -2. -3.]\n",
      "x * y = [  2.   8.  18.]\n",
      "x / y = [ 0.5  0.5  0.5]\n",
      "x / 2.0 = [ 0.5  1.   1.5]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "### np.array()というメソッドでPythonのリストを引数にとりNumPy用の配列を作成\n",
    "### 要素数が3の１次元配列\n",
    "x = np.array([1.0, 2.0, 3.0])\n",
    "print (x)\n",
    "print (\"x = {0}\".format(x))\n",
    "print (type(x))\n",
    "\n",
    "### NumPy配列の算術計算\n",
    "y = np.array([2.0, 4.0, 6.0])\n",
    "print (\"y = {0}\".format(y))\n",
    "print(\"x + y = {0}\".format(x + y))\n",
    "print(\"x - y = {0}\".format(x - y))\n",
    "print(\"x * y = {0}\".format(x * y))\n",
    "print(\"x / y = {0}\".format(x / y))\n",
    "\n",
    "### 各要素とスカラ値の計算\n",
    "print(\"x / 2.0 = {0}\".format(x / 2.0))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### NumPyのN次元配列\n",
    "\n",
    "* 数学との対応\n",
    "    * 1次元配列 : ベクトル\n",
    "    * 2次元配列 : 行列\n",
    "    * 3次元以上 : テンソル\n",
    "        * 本来はベクトルや行列を一般化したものをテンソルという\n",
    "            * ベクトルも行列もテンソル\n",
    "        * ここでは3次元以上をテンソル、もしくは多次元配列と言う事にする"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "A = \n",
      " [[1 2]\n",
      " [3 4]]\n",
      "(2, 2)\n",
      "int64\n",
      "B = \n",
      " [[3 0]\n",
      " [0 6]]\n",
      "A + B = \n",
      " [[ 4  2]\n",
      " [ 3 10]]\n",
      "A * B = \n",
      " [[ 3  0]\n",
      " [ 0 24]]\n",
      "A * 10 = \n",
      " [[10 20]\n",
      " [30 40]]\n"
     ]
    }
   ],
   "source": [
    "### 行列(2次元配列)の作成\n",
    "A = np.array([[1, 2],[3, 4]])\n",
    "print(\"A = \\n {0}\".format(A))\n",
    "\n",
    "### Aの形状(2行2列)\n",
    "print (A.shape)\n",
    "\n",
    "### 要素のデータ型\n",
    "print (A.dtype)\n",
    "\n",
    "### 行列の演算\n",
    "B = np.array([[3, 0],[0, 6]])\n",
    "print(\"B = \\n {0}\".format(B))\n",
    "\n",
    "print(\"A + B = \\n {0}\".format(A + B))\n",
    "print(\"A * B = \\n {0}\".format(A * B))\n",
    "print(\"A * 10 = \\n {0}\".format(A * 10))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### ブロードキャスト\n",
    "\n",
    "* スカラ値と行列の掛け算を行うとき、スカラ値が行列の要素に拡大されて演算される機能\n",
    "* 1次元配列と2次元配列が同じ形状になるように賢く変形してくれる"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "A = \n",
      " [[1 2]\n",
      " [3 4]]\n",
      "B = \n",
      " [10 20]\n",
      "A * 10 = \n",
      " [[10 20]\n",
      " [30 40]]\n",
      "A * B = \n",
      " [[10 40]\n",
      " [30 80]]\n"
     ]
    }
   ],
   "source": [
    "### 行列(2次元配列)の作成\n",
    "A = np.array([[1, 2],[3, 4]])\n",
    "print(\"A = \\n {0}\".format(A))\n",
    "B = np.array([10, 20])\n",
    "print(\"B = \\n {0}\".format(B))\n",
    "\n",
    "### スカラと　行列の演算\n",
    "print(\"A * 10 = \\n {0}\".format(A * 10))\n",
    "\n",
    "### 1次元配列と2次元配列の演算\n",
    "print(\"A * B = \\n {0}\".format(A * B))\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### 要素へのアクセス"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X = \n",
      " [[51 55]\n",
      " [14 19]\n",
      " [ 0 41]]\n",
      "[51 55]\n",
      "14\n",
      "[51 55]\n",
      "[14 19]\n",
      "[ 0 41]\n",
      "51\n",
      "55\n",
      "14\n",
      "19\n",
      "0\n",
      "41\n",
      "[51 55 14 19  0 41]\n",
      "51\n",
      "55\n",
      "14\n",
      "19\n",
      "0\n",
      "41\n",
      "[51 14  0]\n",
      "[ True  True False  True False  True]\n",
      "[51 55 19 41]\n"
     ]
    }
   ],
   "source": [
    "X = np.array([[51,55], [14,19], [0,41]])\n",
    "print(\"X = \\n {0}\".format(X))\n",
    "print(X[0])\n",
    "print(X[1][0])\n",
    "\n",
    "### for分を使って各要素にアクセス\n",
    "for row in X:\n",
    "    print(row)\n",
    "\n",
    "for row in X:\n",
    "    for i in row:\n",
    "        print(i)\n",
    "\n",
    "### 1次元配列に変換\n",
    "print (X.flatten())\n",
    "\n",
    "### forでループ\n",
    "for row in X.flatten():\n",
    "    print (row)\n",
    "\n",
    "### インデックスが0,2,4番目の要素を取得\n",
    "print (X.flatten()[np.array([0,2,4])])\n",
    "\n",
    "### 値が14より大きいの要素のみ取得\n",
    "print (X.flatten() > 14)\n",
    "print (X[X>14].flatten())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "## Matplotlib\n",
    "\n",
    "* グラフ描画のためのライブラリ"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nrkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1107f0320>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "### データの作成\n",
    "### 0から2πまで0.1刻みで値を生成\n",
    "x = np.arange(0, 2*np.pi, 0.1)\n",
    "y = np.sin(x)\n",
    "\n",
    "### グラフの描画\n",
    "plt.plot(x, y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x110562d30>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "### データの作成\n",
    "### 0から2πまで0.1刻みで値を生成\n",
    "x = np.arange(0, 2*np.pi, 0.1)\n",
    "y1 = np.sin(x)\n",
    "y2 = np.cos(x)\n",
    "\n",
    "### グラフの描画\n",
    "plt.plot(x, y1, label=\"sin\")\n",
    "\n",
    "### cosは破線で描画\n",
    "plt.plot(x, y2, linestyle = \"--\", label=\"cos\")\n",
    "\n",
    "### 軸のラベル\n",
    "plt.xlabel(\"x\")\n",
    "plt.ylabel(\"y\")\n",
    "\n",
    "### タイトル\n",
    "plt.title('sin & cos')\n",
    "\n",
    "### 凡例の表示\n",
    "plt.legend()\n",
    "\n",
    "### 図の描画\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### 画像の表示\n",
    "\n",
    "* 画像の表示\n",
    "    * 画像表示のimshow()メソッドを使う\n",
    "* 画像の読み込み\n",
    "    * matplotlib.imageモジュールのimread()を利用する"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fb3543a0d68>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.image import imread\n",
    "\n",
    "### imreadメソッドで画像を読み込み\n",
    "img = imread('img/jsd.png')\n",
    "\n",
    "### 画像を表示\n",
    "plt.imshow(img)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Mongodb連携"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>managers</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>[{'user_id': 4f0f982000cd01285e002115, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>[{'user_id': 4f0f981f00cd01285e002109, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>[{'user_id': 4f0f97ab00cd01285e000144, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>[{'user_id': 4f0f97a900cd01285e000084, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>[{'user_id': 4f0f97aa00cd01285e0000d0, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>[{'user_id': 4f77287600cd013e9c000049, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>[{'user_id': 4f0f97ab00cd01285e000144, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>[{'user_id': 4f0f97b300cd01285e0003af, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>[{'user_id': 4f0f97ab00cd01285e000124, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>[{'user_id': 4f77289800cd013e9c00012f, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>[{'user_id': 4f0f97da00cd01285e000f43, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>[{'user_id': 5158567f00cd0142a400012d, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>[{'user_id': 4f7728d700cd013e9c00021d, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>[]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>[{'user_id': 4f0f981300cd01285e001e33, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>450</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>451</th>\n",
       "      <td>[{'user_id': 4f7728b600cd013e9c0001cb, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>452</th>\n",
       "      <td>[{'user_id': 4f0f97cc00cd01285e000b4d, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>453</th>\n",
       "      <td>[{'user_id': 4f0f97be00cd01285e000731, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>454</th>\n",
       "      <td>[{'user_id': 4f0f97c200cd01285e000857, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>455</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>456</th>\n",
       "      <td>[{'user_id': 4f0f980200cd01285e0019fd, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>457</th>\n",
       "      <td>[{'user_id': 4f0f97c600cd01285e0009ad, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>458</th>\n",
       "      <td>[{'user_id': 4f0f97b500cd01285e00045d, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>459</th>\n",
       "      <td>[{'user_id': 4f7728d500cd013e9c00020d, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>460</th>\n",
       "      <td>[{'user_id': 4f0f97c200cd01285e000857, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>461</th>\n",
       "      <td>[{'user_id': 4f0f97ad00cd01285e0001c8, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>462</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>463</th>\n",
       "      <td>[{'user_id': 5339a7e300cd01314300017b, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>464</th>\n",
       "      <td>[{'user_id': 5339a7e300cd01314300017b, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>465</th>\n",
       "      <td>[{'user_id': 4f0f97ae00cd01285e000248, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>466</th>\n",
       "      <td>[{'user_id': 4f0f97ae00cd01285e000248, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>467</th>\n",
       "      <td>[{'user_id': 5158567b00cd0142a4000109, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>468</th>\n",
       "      <td>[{'user_id': 4f0f97ae00cd01285e000248, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>469</th>\n",
       "      <td>[{'user_id': 4f0f97e300cd01285e0011ef, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>470</th>\n",
       "      <td>[{'user_id': 4f0f97d700cd01285e000e73, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>471</th>\n",
       "      <td>[{'user_id': 4f0f97b000cd01285e0002fd, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>472</th>\n",
       "      <td>[{'user_id': 4f0f97b700cd01285e0004f9, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>473</th>\n",
       "      <td>[{'user_id': 4f0f980c00cd01285e001c95, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>474</th>\n",
       "      <td>[{'user_id': 4f0f981b00cd01285e001ffb, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>475</th>\n",
       "      <td>[{'user_id': 4f0f97bc00cd01285e0006bd, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>476</th>\n",
       "      <td>[{'user_id': 5339a7e300cd01314300017b, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>477</th>\n",
       "      <td>[{'user_id': 4f0f97e100cd01285e00116f, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>478</th>\n",
       "      <td>[{'user_id': 4f0f97cc00cd01285e000b63, 'state'...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>479</th>\n",
       "      <td>[{'user_id': 4f0f97cd00cd01285e000b8f, 'state'...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>480 rows × 1 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                              managers\n",
       "0    [{'user_id': 4f0f982000cd01285e002115, 'state'...\n",
       "1    [{'user_id': 4f0f981f00cd01285e002109, 'state'...\n",
       "2                                                  NaN\n",
       "3                                                  NaN\n",
       "4                                                  NaN\n",
       "5                                                  NaN\n",
       "6    [{'user_id': 4f0f97ab00cd01285e000144, 'state'...\n",
       "7                                                  NaN\n",
       "8                                                   []\n",
       "9    [{'user_id': 4f0f97a900cd01285e000084, 'state'...\n",
       "10                                                  []\n",
       "11                                                  []\n",
       "12   [{'user_id': 4f0f97aa00cd01285e0000d0, 'state'...\n",
       "13                                                  []\n",
       "14                                                  []\n",
       "15   [{'user_id': 4f77287600cd013e9c000049, 'state'...\n",
       "16   [{'user_id': 4f0f97ab00cd01285e000144, 'state'...\n",
       "17   [{'user_id': 4f0f97b300cd01285e0003af, 'state'...\n",
       "18   [{'user_id': 4f0f97ab00cd01285e000124, 'state'...\n",
       "19                                                  []\n",
       "20                                                  []\n",
       "21   [{'user_id': 4f77289800cd013e9c00012f, 'state'...\n",
       "22   [{'user_id': 4f0f97da00cd01285e000f43, 'state'...\n",
       "23                                                  []\n",
       "24   [{'user_id': 5158567f00cd0142a400012d, 'state'...\n",
       "25                                                  []\n",
       "26                                                  []\n",
       "27   [{'user_id': 4f7728d700cd013e9c00021d, 'state'...\n",
       "28                                                  []\n",
       "29   [{'user_id': 4f0f981300cd01285e001e33, 'state'...\n",
       "..                                                 ...\n",
       "450                                                NaN\n",
       "451  [{'user_id': 4f7728b600cd013e9c0001cb, 'state'...\n",
       "452  [{'user_id': 4f0f97cc00cd01285e000b4d, 'state'...\n",
       "453  [{'user_id': 4f0f97be00cd01285e000731, 'state'...\n",
       "454  [{'user_id': 4f0f97c200cd01285e000857, 'state'...\n",
       "455                                                NaN\n",
       "456  [{'user_id': 4f0f980200cd01285e0019fd, 'state'...\n",
       "457  [{'user_id': 4f0f97c600cd01285e0009ad, 'state'...\n",
       "458  [{'user_id': 4f0f97b500cd01285e00045d, 'state'...\n",
       "459  [{'user_id': 4f7728d500cd013e9c00020d, 'state'...\n",
       "460  [{'user_id': 4f0f97c200cd01285e000857, 'state'...\n",
       "461  [{'user_id': 4f0f97ad00cd01285e0001c8, 'state'...\n",
       "462                                                NaN\n",
       "463  [{'user_id': 5339a7e300cd01314300017b, 'state'...\n",
       "464  [{'user_id': 5339a7e300cd01314300017b, 'state'...\n",
       "465  [{'user_id': 4f0f97ae00cd01285e000248, 'state'...\n",
       "466  [{'user_id': 4f0f97ae00cd01285e000248, 'state'...\n",
       "467  [{'user_id': 5158567b00cd0142a4000109, 'state'...\n",
       "468  [{'user_id': 4f0f97ae00cd01285e000248, 'state'...\n",
       "469  [{'user_id': 4f0f97e300cd01285e0011ef, 'state'...\n",
       "470  [{'user_id': 4f0f97d700cd01285e000e73, 'state'...\n",
       "471  [{'user_id': 4f0f97b000cd01285e0002fd, 'state'...\n",
       "472  [{'user_id': 4f0f97b700cd01285e0004f9, 'state'...\n",
       "473  [{'user_id': 4f0f980c00cd01285e001c95, 'state'...\n",
       "474  [{'user_id': 4f0f981b00cd01285e001ffb, 'state'...\n",
       "475  [{'user_id': 4f0f97bc00cd01285e0006bd, 'state'...\n",
       "476  [{'user_id': 5339a7e300cd01314300017b, 'state'...\n",
       "477  [{'user_id': 4f0f97e100cd01285e00116f, 'state'...\n",
       "478  [{'user_id': 4f0f97cc00cd01285e000b63, 'state'...\n",
       "479  [{'user_id': 4f0f97cd00cd01285e000b8f, 'state'...\n",
       "\n",
       "[480 rows x 1 columns]"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pymongo\n",
    "import pandas as pd\n",
    "from pymongo import MongoClient\n",
    "client = MongoClient(host=['10.136.3.166:27017'])\n",
    "db = client.joruri_sns\n",
    "collection = db.sns_projects\n",
    "data = pd.DataFrame(list(collection.find()))\n",
    "\n",
    "data[['managers']]\n",
    "#data[['code','managers','members']]\n",
    "#data[['code','managers','members']].groupby(['code']).count().sort_values(by='managers', ascending=False)\n",
    "#data[['managers']].to_csv( 'mongo.csv' )"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
